JavaScript 預編譯


Posted by hata0833 on 2022-08-25

今天做筆試的時候遇到了一題

console.log(a)
var a = 0
a = function() {console.log('111')}
function a() {console.log('222')}

最終輸出是 function a() {console.log('222')}
Imgur
晚上在複習JS基礎的時候看到了變量提升,在阮一峰的文檔裡是這樣寫的
Imgur

https://wangdoc.com/javascript/basic/grammar.html

對於一開始那道題,進行過預編譯後是這樣的
變量聲明會被提升(即表達式前面,var a 的部分)
function的聲明也會被提升,整行代碼被提到了最前面,因此console.log(a)時出現的不是undefined,而是預編譯後被提升到頭部的function a()

var a
function a() {console.log('222')}
console.log(a)
a = 0
a = function() {console.log('111')}

#javascript







Related Posts

[ 筆記 ] 資訊安全 -SQL Injection、XSS

[ 筆記 ] 資訊安全 -SQL Injection、XSS

N1.1_Sass 實作補充_CSS 預處理器

N1.1_Sass 實作補充_CSS 預處理器

使用 Python 資料分析和視覺化上市櫃公司薪資公開資料

使用 Python 資料分析和視覺化上市櫃公司薪資公開資料


Comments